1. Field of the Invention
The present invention generally relates to data processing. More particularly, the invention relates to debugging code.
2. Description of the Related Art
A programmer develops a software program by producing and entering source code into files using a text editor program. The computer then creates an executable program by translating the source code into machine code. The machine code is the rudimentary instructions understood by a computer. Illustratively, the foregoing software development process is accomplished by running a series of programs. These programs typically include a compiler for translating the source code into machine code and a linker to link the machine code together to form a program.
When developing computer software, it is necessary to perform a function termed “debugging”. Debugging involves testing and evaluating the software to find and correct any errors and improper logic operation. An effective debugger program is necessary for rapid and efficient development of software.
A conventional debugging system comprises a combination of computer hardware and debugger software that executes a user's program in a controlled manner. Debugging aids a user in identifying and correcting mistakes in an authored program by allowing the program to be executed in small segments. To this end, debugging provides functions including breakpoints, run-to-cursor, step into, step over and the like.
Debugging is often necessary not only during initial development, but post-development when the code is being used by end-users. This may occur, for example, because the code was not fully tested by the developer or because end-users initialize the code in a manner not contemplated by the developer. Post-development bugs may be discovered by the developer or by the end-users. In any case, the developer is now required to perform additional debugging. Typically, the developer retains the source code to be debugged and provides end-users only with a debuggable copy of the object code. Accordingly, when a post-development bug is encountered, the developer may remotely connect to an end-user's system (e.g., via a workstation on which the source code resides) and debug the end-user's application at the source level without ever revealing the source code to the end-user. In other cases, the end-user may be provided with the source code. In such a case, the developer accesses the source code locally at the end-user's site.
Developers typically prefer the former approach, in which the source code is never revealed to the end-user, because the developer is able to retain a proprietary interest in the source code. However, neither approach protects any confidential information the end-user may have on the system being debugged. Specifically, by allowing the developer access to their application to be debugged (whether remotely or locally), the end-user exposes their confidential information associated with the application.
Therefore, there is a need for a method and system of debugging code without compromising confidential data.